第三十五讲 R-多元线性回归
在“R与生物统计专题”中,我们会从介绍R的基本知识展开到生物统计原理及其在R中的实现。以从浅入深,层层递进的形式在投必得医学公众号更新。
前几节课我们学习了线性回归的相关概念(第三十二讲 R-回归分析概述)、简单的线性回归模型(第三十三讲 R-简单线性回归模型(1)、第三十四讲 R-简单线性回归模型(2)),相信大家对线性回归都有了一定的了解。
今天,我们讲解线性回归中稍微复杂的概念——多元线性回归。
多元线性回归
多元线性回归是简单线性回归的扩展(第三十三讲 R-简单线性回归模型(1)、第三十四讲 R-简单线性回归模型(2))。
用于多个不同的预测变量(x)预测结果变量(y)。也可用于校正混杂因素,即将需要校正的混杂因素作为一个与预测变量平行的变量放入方程式中,从而达到在新建的模型中校正该混杂因素的作用。
对于三个预测变量(x),y的预测由以下等式表示:
y = b0 + b1*x1 + b2*x2 + b3*x3
“b”值称为回归权重(或β系数)。他们测量预测变量与结果之间的关联。“ bj”可以解释为“ xj”,在其他预测变量不变的情况下,每增加一个单位对y的平均影响 。
2.1 加载所需的R包
本章需要以下R软件包:
tidyverse 用于数据处理和可视化
library(tidyverse)
2.2 数据举例
我们将使用一组糖尿病的数据,它包含768人糖尿病相关的数据,包括怀孕情况,血糖,血压,皮肤厚度,胰岛素水平,体重指数,糖尿病谱系功能,年龄和糖尿病诊断结果(Outcome)。
如需获取数据diabetes.csv,请关注投必得医学公众号,后台回复“diabetes.csv”获取数据。
导入数据:
my_data<-read.csv('diabetes.csv')
检查数据:
dim(my_data)
[1] 768 9
head(my_data)
输出结果
Pregnancies Glucose BloodPressure SkinThickness Insulin BMI DiabetesPedigreeFunction Age Outcome
1 6 148 72 35 0 33.6 0.627 50 1
2 1 85 66 29 0 26.6 0.351 31 0
3 8 183 64 0 0 23.3 0.672 32 1
4 1 89 66 23 94 28.1 0.167 21 0
5 0 137 40 35 168 43.1 2.288 33 1
6 5 116 74 0 0 25.6 0.201 30 0
数据清理
new_data<-my_data[my_data$Glucose>0 & my_data$Insulin >0 & my_data$BMI >0,]
dim(new_data)
#[1] 392 9
研究问题:根据胰岛素水平、怀孕次数和体重指数情况来预测血糖水平。
多元线性模型如下所示:
Glucose = b0 + b1*Insulin + b2*Pregnancies + b3*BMI
您可以按以下方式计算R中的模型系数:
model <- lm(Glucose ~ Insulin + Pregnancies + BMI, data = new_data)
summary(model)
输出结果
Call:
lm(formula = Glucose ~ Insulin + Pregnancies + BMI, data = new_data)
Residuals:
Min 1Q Median 3Q Max
-67.250 -16.499 -3.224 13.567 73.396
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 82.43375 6.16185 13.378 < 2e-16 ***
Insulin 0.14246 0.01079 13.197 < 2e-16 ***
Pregnancies 1.51089 0.38921 3.882 0.000122 ***
BMI 0.39216 0.18203 2.154 0.031826 *
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 24.61 on 388 degrees of freedom
Multiple R-squared: 0.3687, Adjusted R-squared: 0.3639
F-statistic: 75.55 on 3 and 388 DF, p-value: < 2.2e-16
2.4 结果解释
解释多元回归分析的第一步是在模型摘要的底部检查F统计量和关联的p值。
在我们的示例中,可以看出F统计量的p值 < 2.2e-16,这表明至少一个预测变量与结果变量显着相关。
要查看哪些预测变量与结果变量显著相关,您可以检查系数表,该表显示了回归β系数和相关的t统计p值的估计值:
summary(model)$coefficient
输出结果
Estimate Std. Error t value Pr(>|t|)
(Intercept) 82.4337537 6.1618466 13.378092 7.896785e-34
Insulin 0.1424569 0.0107945 13.197176 4.158704e-33
Pregnancies 1.5108853 0.3892135 3.881894 1.217842e-04
BMI 0.3921590 0.1820293 2.154373 3.182598e-02
对于给定的预测变量,t统计量评估预测变量和结果变量之间是否存在显着关联,即预测变量的β系数是否显着不同于零。
可以看出,胰岛素水平和怀孕次数与血糖的变化显着相关(P < 0.001),而体重指数变化虽然与血糖变化也显著相关,但是关联性相对小一些(P = 0.03)。
对于给定的预测变量,系数(b)可以解释为,保持所有其他预测变量固定时,预测变量增加一个单位对y的平均影响。
例如,在固定的胰岛素水平和怀孕次数下,体重指数每增加一个单位,平均可以使血糖增加大约0.39 * 1 = 0.39个单位。
如果我们的模型中,存在有某个预测变量与结果变量不相关,则在最后的多元回归模型中,我们应该删除该预测变量。
模型系数的置信区间可以提取如下:
confint(model)
输出结果
2.5 % 97.5 %
(Intercept) 70.31896628 94.5485411
Insulin 0.12123388 0.1636799
Pregnancies 0.74565390 2.2761166
BMI 0.03427176 0.7500462
正如我们在简单线性回归中所看到的(第三十四讲 R-简单线性回归模型(2)),可以通过检查R平方(R2)和残差标准误(RSE)来评估模型的整体质量。
3.1 残留标准误差(RSE)或sigma
RSE估计值提供了预测误差的度量。RSE越低,模型(基于现有数据)越准确。
可以通过将RSE除以平均结果变量来估计错误率:
sigma(model)/mean(new_data$Glucose)
[1] 0.2007225
在我们的多元回归示例中,RSE为24.6,对应于20%的错误率。
3.2 R平方
R平方
在多元线性回归中,R2表示结果变量(y)的观测值与y的拟合(即预测)值之间的相关系数。因此,R的值将始终为正,范围为0至1。
R2表示结果变量y中的方差比例,可以通过知道x变量的值来预测该比例。R2值接近1表示模型解释了结果变量中很大一部分方差。
R2的一个问题是,当将更多变量添加到模型中,即使这些变量与响应之间的关联性很弱,R2也会一直增加。解决方案是通过考虑预测变量的数量来调整R2。
摘要输出中“已调整的R平方”值是对预测模型中包含的x变量数量的校正。
在我们的示例中, 调整后的R2 = 0.3639,这意味着“ 36.39%的血糖差异可以通过胰岛素水平、怀孕次数和体重指数进行预测。
好了,本期讲解就先到这里。小伙伴们赶紧试起来吧。
在之后的更新中,我们会进一步为您介绍R的入门,以及常用生物统计方法和R实现。欢迎关注,投必得医学手把手带您走入R和生物统计的世界。
提前预告一下,下一讲我们将学习多元线性回归中的交互作用及更优模型选择。
当然啦,R语言的掌握是在长期训练中慢慢积累的。一个人学习太累,不妨加入“R与统计交流群”,和数百位硕博一起学习。
快扫二维码撩客服,
带你进入投必得医学交流群,
让我们共同进步!
↓↓
- END -
长按二维码关注「投必得医学」,更多科研干货在等你!